package com.example.neochevbook;


import java.io.File;

import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;

import android.os.Environment;
import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;

public class Modele {
	private String DB4OFILENAME; 
	private ObjectContainer db;
	private File appDir;
	private String MDP;
	private SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
	private MainActivity monactivity = new MainActivity();
	
	public Modele(){
		mkdir();
		open();
		chargeDb();
		chargeDbAppartement();
		db.close();
	}
	
	public void open(){
		
		DB4OFILENAME=Environment.getExternalStorageDirectory()+"/baseDB4O"+"/BasePPE4.db4o";
		db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME);
		
	}
	
	public void close(){
		db.close();
	}
	
	public void mkdir(){
		appDir = new File(Environment.getExternalStorageDirectory()+"/baseDB4O");
		if(!appDir.exists() && !appDir.isDirectory()) 
		    {
		        appDir.mkdirs();
		    }
	}
	
	public ArrayList<Utilisateur> listUtilisateur(){
		

		ObjectSet<Utilisateur> result = db.queryByExample(Utilisateur.class);
		ArrayList<Utilisateur> lesUtilisateur = new ArrayList<Utilisateur>();
		
		while (result.hasNext()) {
			lesUtilisateur.add((Utilisateur)result.next());
		}

		return lesUtilisateur;
	}
	
	public Utilisateur trouveClient(String id){
		open();
		Utilisateur vretour = new Utilisateur();
		vretour.setIdentifiant(id);
		ObjectSet<Utilisateur> result = db.queryByExample(vretour);
		
		while (result.hasNext()) {
			vretour = (Utilisateur)result.next();
		}
		db.close();
		return vretour;
	}
	

	public void saveClient(Utilisateur unUtilisateur){
		/*Client vretour = trouveClient(unClient.getIdentifiant());
		if (vretour.getIdentifiant() != null){
			db.store(vretour);
		}
		else {
			db.store(unClient);
		}*/
		
		open();
		Utilisateur vretour = new Utilisateur();
		vretour.setIdentifiant(unUtilisateur.getIdentifiant());
		ObjectSet<Utilisateur> result = db.queryByExample(vretour);
		
		if(result.size() == 0)
		{
			db.store(unUtilisateur);
			
		}
		else
		{
			vretour = (Utilisateur)result.next();
			vretour.recopieUtilisateur(unUtilisateur);
			db.store(vretour);
		}
		db.close();
		 
	}
	
	public void chargeDb(){
		ArrayList<Utilisateur> lesUtilisateur = listUtilisateur();
		Utilisateur vcli = new Utilisateur();
		Utilisateur vcli1 = new Utilisateur();
		Utilisateur vcli2 = new Utilisateur();
		Utilisateur vcli3 = new Utilisateur();
		Utilisateur vcli4 = new Utilisateur();

	
		if(lesUtilisateur.size() == 0){
						
				vcli = new Utilisateur(1001, "paul", "jacques",
						"Angers", "place saint", "maine et loire",
						49000, "sdfsdfsdf@gmail.com", 063564654, "PPE41","PPE4");
				vcli1 = new Utilisateur(1002, "paul", "jacques",
						"Angers", "place saint", "maine et loire",
						49000, "sdfsdfsdf@gmail.com", 063564654, "PPE42","PPE4");
				vcli2 = new Utilisateur(1003, "paul", "jacques",
						"Angers", "place saint", "maine et loire",
						49000, "sdfsdfsdf@gmail.com", 063564654, "PPE43","PPE4");
				vcli3 = new Utilisateur(1004, "paul", "jacques",
						"Angers", "place saint", "maine et loire",
						49000, "sdfsdfsdf@gmail.com", 063564654, "PPE44","PPE4");
				vcli4 = new Utilisateur(1005, "paul", "jacques",
						"Angers", "place saint", "maine et loire",
						49000, "sdfsdfsdf@gmail.com", 063564654, "PPE45","PPE4");
				
				db.store(vcli);
				db.store(vcli1);
				db.store(vcli2);
				db.store(vcli3);
				db.store(vcli4);

				
			
		}
	}
	
	public void addclient(ArrayList<Utilisateur> vUtilisateur)
	{
		open();
		db.store(vUtilisateur);
		db.close();
	}
	
	public void delUtilisateur()
	{
		
		//db.delete(listClient());
	}
	
public ArrayList<Appartement> listAppartement(){
		
		
		ObjectSet<Appartement> result = db.queryByExample(Appartement.class);
		ArrayList<Appartement> lesAppartement = new ArrayList<Appartement>();
		
		while (result.hasNext()) {
			lesAppartement.add((Appartement)result.next());
		}

		return lesAppartement;
	}
	
	public Appartement trouveAppartement(int id){
		open();
		Appartement vretour = new Appartement();
		vretour.setId_utilisateur(id);
		ObjectSet<Appartement> result = db.queryByExample(vretour);
		
		while (result.hasNext()) {
			vretour = (Appartement)result.next();
		}
		db.close();
		return vretour;
	}
	
	public Appartement trouveAppartement2(int id){
		open();
		Appartement vretour = new Appartement();
		vretour.setId_bien(id);
		ObjectSet<Appartement> result = db.queryByExample(vretour);
		
		while (result.hasNext()) {
			vretour = (Appartement)result.next();
		}
		db.close();
		return vretour;
	}
	
	public Appartement trouveAppartement3(int id){

		Appartement vretour = new Appartement();
		vretour.setId_utilisateur(id);
		ObjectSet<Appartement> result = db.queryByExample(vretour);
		
		while (result.hasNext()) {
			vretour = (Appartement)result.next();
		}

		return vretour;
	}
	
	public void saveClient(Appartement unAppartement){
		/*Client vretour = trouveClient(unClient.getIdentifiant());
		if (vretour.getIdentifiant() != null){
			db.store(vretour);
		}
		else {
			db.store(unClient);
		}*/
		
		open();
		Appartement vretour = new Appartement();
		vretour.setId_bien((unAppartement.getId_bien()));
		ObjectSet<Appartement> result = db.queryByExample(vretour);
		
		if(result.size() == 0)
		{
			db.store(unAppartement);
			
		}
		else
		{
			vretour = (Appartement)result.next();
			vretour.recopieAppartement(unAppartement);
			db.store(vretour);
		}
		db.close();
		 
	}
	
	public void chargeDbAppartement(){
		ArrayList<Appartement> lesAppartement = listAppartement();
		Appartement vcli = new Appartement();
		Appartement vcli1 = new Appartement();
		Appartement vcli2 = new Appartement();
		Appartement vcli3 = new Appartement();
		Appartement vcli4 = new Appartement();

	
		if(lesAppartement.size() == 0){
			try{
			
				vcli = new Appartement(5, "bien", "description", 12,
						500, 50, "la herdrie", "Angers", 49250, "Maine et loire", 2,3, 2,1,2,1, dateFormat.parse("12/11/2014"), dateFormat.parse("12/11/2014"), 0 ,0, 
						dateFormat.parse("12/11/2014"), 1001,"http://goshka.fr/ppe4/images/photosappartements/1.jpg");
				vcli1 = new Appartement(6, "bien", "description", 12,
						500, 50, "la herdrie", "Angers", 49250, "Maine et loire", 2,3, 2,1,2,1,dateFormat.parse("12/11/2014"), dateFormat.parse("12/11/2014"), 0 ,0, 
						dateFormat.parse("12/11/2014"), 1002,"http://goshka.fr/ppe4/images/photosappartements/2.jpg");
				vcli2 = new Appartement(7, "bien", "description", 12,
						500, 50, "la herdrie", "Angers", 49250, "Maine et loire", 2,3, 2,1,2,1, dateFormat.parse("12/11/2014"), dateFormat.parse("12/11/2014"), 0 ,0, 
						dateFormat.parse("12/11/2014"), 1003,"");
				vcli3 = new Appartement(8, "bien", "description", 12,
						500, 50, "la herdrie", "Angers", 49250, "Maine et loire", 2,3, 2,1,2,1, dateFormat.parse("12/11/2014"), dateFormat.parse("12/11/2014"), 0 ,0, 
						dateFormat.parse("12/11/2014"), 1004,"");
				vcli4 = new Appartement(9, "bien", "description", 12,
						500, 50, "la herdrie", "Angers", 49250, "Maine et loire", 2,3, 2,1,2,1, dateFormat.parse("12/11/2014"), dateFormat.parse("12/11/2014"), 0 ,0, 
						dateFormat.parse("12/11/2014"), 1005,"");
			}
				catch (ParseException e) {
					   // TODO Auto-generated catch block
					   e.printStackTrace();
				}
				db.store(vcli);
				db.store(vcli1);
				db.store(vcli2);
				db.store(vcli3);
				db.store(vcli4);

				
			
		}
	}
	
	public void addAppartement(Appartement vAppartement)
	{
				

		
/*		int i = 0;
		Appartement unappart = new Appartement();
		
		for(i = 0; i<vAppartement.size(); i++)
		{
			unappart = trouveAppartement(vAppartement.get(i).getId_utilisateur());
			if(unappart.getId_utilisateur() == 0)
			{ */
				open();
				db.store(vAppartement);
				db.close();
/*

			}
		}
		*/
	}
	
	public void addImageAppartement(Appartement vAppartement)
	{
				

		
/*		int i = 0;
		Appartement unappart = new Appartement();
		
		for(i = 0; i<vAppartement.size(); i++)
		{
			unappart = trouveAppartement(vAppartement.get(i).getId_utilisateur());
			if(unappart.getId_utilisateur() == 0)
			{ */
				open();
				db.store(vAppartement);
				db.close();
/*

			}
		}
		*/
	}
	
	public void delAppartement()
	{
		
		//db.delete(listClient());
	}
	
public ArrayList<Image_bien> listImage_bien(){
		
		open();
		ObjectSet<Image_bien> result = db.queryByExample(Image_bien.class);
		ArrayList<Image_bien> lesImage_bien = new ArrayList<Image_bien>();
		
		while (result.hasNext()) {
			lesImage_bien.add((Image_bien)result.next());
		}
		db.close();

		return lesImage_bien;
	}
	
	public Image_bien trouveImage_bien(int id){
		open();
		Image_bien vretour = new Image_bien();
		vretour.setId_bien(id);
		ObjectSet<Image_bien> result = db.queryByExample(vretour);
		
		while (result.hasNext()) {
			vretour = (Image_bien)result.next();
		}
		db.close();
		return vretour;
	}
	
	public Image_bien trouveImage_bien2(int id){
		open();
		Image_bien vretour = new Image_bien();
		vretour.setId_image(id);
		ObjectSet<Image_bien> result = db.queryByExample(vretour);
		
		while (result.hasNext()) {
			vretour = (Image_bien)result.next();
		}
		db.close();
		return vretour;
	}
	
	public void addImage_bien(ArrayList<Image_bien> vImage_bien)
	{

				open();
				db.store(vImage_bien);
				db.close();

	}
	
	public void addImage_bien2(Image_bien vImage_bien)
	{

				open();
				db.store(vImage_bien);
				db.close();

	}
	


}